<?php

/**
 * VPerfilFuncionalidadeLogic
 * @package model
 * @subpackage logic
 * 
 */
class VPerfilFuncionalidadeLogic extends VLogicModel {

    public function __construct() {
        parent::__construct(new VPerfilFuncionalidadeDAO());
    }

    public function ajaxListPerfilPorFuncionalidade($params) {

        /* id da funcionalidade desejado */
        $idFuncionalidade = trim($params['idFuncionalidade']);
        /* Atributos do objeto que poderam ser ordenado */
        $atributos = array('nomePefil', 'nomeSistema', 'statusFuncionalidade');
        $order = TDataTableHelper::mountOrderBy($atributos, $params['iSortCol_0'], $params['sSortDir_0']);
        /* Colunas do banco a serem pesquisandas */
        $colunas = array('nom_perfil', 'nom_sistema', 'status_perfil' => array('A' => 'Ativo', 'D' => 'Desativado'));
        /* Montar string de pesquisa */
        $seach = TDataTableHelper::mountSearch($colunas, $params['sSearch']);
        /* Definir where */
        $where = "ide_funcionalidade = '{$idFuncionalidade}' {$seach}";
        /* Total de registros */
        $iTotal = $this->totalRegistro($where);
        /* Listar */
        $arrayListObject = $this->listar($where, $order, null, null, $params['iDisplayStart'], $params['iDisplayLength']);
        /* Montar output */
        $output = TDataTableHelper::mountArrayOutPut($params['sEcho'], $iTotal);
        if (isset($arrayListObject[0])) {
            foreach ($arrayListObject as $objPerfilFuncionalidade) {
                $statusPerfil = ($objPerfilFuncionalidade->getStatusPerfil() === 'A') ? "<spam class='fg-emerald'>Ativo</spam>" : "<spam class='fg-red'>Desativado</spam>";
                $output['aaData'][] = array(
                    utf8_encode($objPerfilFuncionalidade->getNomePefil()),
                    utf8_encode($objPerfilFuncionalidade->getNomeSistema()),
                    utf8_encode($statusPerfil)
                );
                unset($statusPerfil);
            }
        }

        return json_encode($output);
    }

    public function ajaxListAllowPageInPerfil($params) {

        /* id da funcionalidade desejado */
        $idPerfil = trim($params['idPerfil']);
        /* Atributos do objeto que poderam ser ordenado */
        $atributos = array('nomeFuncionalidade', 'statusFuncionalidade');
        $order = TDataTableHelper::mountOrderBy($atributos, $params['iSortCol_0'], $params['sSortDir_0']);
        /* Colunas do banco a serem pesquisandas */
        $colunas = array('nom_funcionalidade', 'status_funcionalidade' => array('A' => 'Ativo', 'D' => 'Desativado'));
        /* Montar string de pesquisa */
        $seach = TDataTableHelper::mountSearch($colunas, $params['sSearch']);
        /* Definir where */
        $where = "ide_perfil = '{$idPerfil}' AND tipo_funcionalidade = 'PG' {$seach}";
        /* Total de registros */
        $iTotal = $this->totalRegistro($where);
        /* Listar */
        $arrayListObject = $this->listar($where, $order, null, null, $params['iDisplayStart'], $params['iDisplayLength']);

        /* Montar output */
        $output = TDataTableHelper::mountArrayOutPut($params['sEcho'], $iTotal);
        if (isset($arrayListObject[0])) {
            foreach ($arrayListObject as $objPerilFuncionalidade) {
                $showPageListAllow = 'index.php?AllowedAccess/listAllow/idPerfil/'.$objPerilFuncionalidade->getId().'/idPagina/'.$objPerilFuncionalidade->getIdFuncionalidade();
                $objEstruturaFuncionalidade = FuncionalidadeHelper::objEstruturaFuncionalidade($objPerilFuncionalidade->getNomeFuncionalidade(), 'PG');
                $funcionalidade = "<a href='#' onclick='showPageListAllow(\"{$showPageListAllow}\")'>".$objEstruturaFuncionalidade->modulo . ' ( '.ucfirst($objEstruturaFuncionalidade->pagina).' )</a>';
                unset($showPageListAllow);
                unset($objEstruturaFuncionalidade);
                $statusFuncionalidade = ($objPerilFuncionalidade->getStatusFuncionalidade() === 'A') ? "<spam class='fg-emerald'>Ativo</spam>" : "<spam class='fg-red'>Desativado</spam>";
                $output['aaData'][] = array(
                    utf8_encode($funcionalidade),
                    utf8_encode($statusFuncionalidade)
                );
                unset($statusFuncionalidade);
            }
        }

        return json_encode($output);
    }

    public function ajaxListToolbarInPagePerfil($params) {

        /* id do perfil desejado */
        $idPerfil = trim($params['idPerfil']);
        
        /* id da pagina desejada */
        $idPagina = trim($params['idPagina']);
        
        /* Atributos do objeto que poderam ser ordenado */
        $atributos = array('nomeFuncionalidade', 'statusFuncionalidade', 'nomeFuncionalidade');
        $order = TDataTableHelper::mountOrderBy($atributos, $params['iSortCol_0'], $params['sSortDir_0']);
        /* Colunas do banco a serem pesquisandas */
        $colunas = array('nom_funcionalidade', 'status_funcionalidade' => array('A' => 'Ativo', 'D' => 'Desativado'));
        /* Montar string de pesquisa */
        $seach = TDataTableHelper::mountSearch($colunas, $params['sSearch']);
        /* Definir where */
        $where = "ide_perfil = '{$idPerfil}' AND ide_funcionalidade_pai = '{$idPagina}' AND tipo_funcionalidade = 'TB' {$seach}";

        /* Total de registros */
        $iTotal = $this->totalRegistro($where);

        /* Listar */
        $arrayListObject = $this->listar($where, $order, null, null, $params['iDisplayStart'], $params['iDisplayLength']);

        /* Montar output */
        $output = TDataTableHelper::mountArrayOutPut($params['sEcho'], $iTotal);
        if (isset($arrayListObject[0])) {
            foreach ($arrayListObject as $objPerilFuncionalidade) {
                $objEstruturaFuncionalidade = FuncionalidadeHelper::objEstruturaFuncionalidade($objPerilFuncionalidade->getNomeFuncionalidade(), 'TB');
                $statusFuncionalidade = ($objPerilFuncionalidade->getStatusFuncionalidade() === 'A') ? "<spam class='fg-emerald'>Ativo</spam>" : "<spam class='fg-red'>Desativado</spam>";
                $delete = '<a href="#" onclick="deleteButton('.$objPerilFuncionalidade->getId().','.$objPerilFuncionalidade->getIdFuncionalidade().')" ><i class="icon-cancel"></i> Excluir</a>';
                $output['aaData'][] = array(
                    utf8_encode(ucfirst($objEstruturaFuncionalidade->toolbar)),
                    utf8_encode($statusFuncionalidade),
                    $delete
                );
                unset($delete);
                unset($statusFuncionalidade);
                unset($objEstruturaFuncionalidade);
            }
        }

        return json_encode($output);
    }

    public function ajaxListFlagInPagePerfil($params) {

        /* id do perfil desejado */
        $idPerfil = trim($params['idPerfil']);
        
        /* id da pagina desejada */
        $idPagina = trim($params['idPagina']);
        
        /* Atributos do objeto que poderam ser ordenado */
        $atributos = array('nomeFuncionalidade', 'statusFuncionalidade');
        $order = TDataTableHelper::mountOrderBy($atributos, $params['iSortCol_0'], $params['sSortDir_0']);
        /* Colunas do banco a serem pesquisandas */
        $colunas = array('nom_funcionalidade', 'status_funcionalidade' => array('A' => 'Ativo', 'D' => 'Desativado'));
        /* Montar string de pesquisa */
        $seach = TDataTableHelper::mountSearch($colunas, $params['sSearch']);
        /* Definir where */
        $where = "ide_perfil = '{$idPerfil}' AND ide_funcionalidade_pai = '{$idPagina}' AND tipo_funcionalidade = 'FG' {$seach}";

        /* Total de registros */
        $iTotal = $this->totalRegistro($where);

        /* Listar */
        $arrayListObject = $this->listar($where, $order, null, null, $params['iDisplayStart'], $params['iDisplayLength']);

        /* Montar output */
        $output = TDataTableHelper::mountArrayOutPut($params['sEcho'], $iTotal);
        if (isset($arrayListObject[0])) {
            foreach ($arrayListObject as $objPerilFuncionalidade) {
                $objEstruturaFuncionalidade = FuncionalidadeHelper::objEstruturaFuncionalidade($objPerilFuncionalidade->getNomeFuncionalidade(), 'FG');
                $statusFuncionalidade = ($objPerilFuncionalidade->getStatusFuncionalidade() === 'A') ? "<spam class='fg-emerald'>Ativo</spam>" : "<spam class='fg-red'>Desativado</spam>";
                $delete = '<a href="#" onclick="deleteFlag('.$objPerilFuncionalidade->getId().','.$objPerilFuncionalidade->getIdFuncionalidade().')" ><i class="icon-cancel"></i> Excluir</a>';
                $output['aaData'][] = array(
                    utf8_encode(ucfirst($objEstruturaFuncionalidade->flag)),
                    utf8_encode($statusFuncionalidade),
                    $delete
                );
                unset($statusFuncionalidade);
                unset($objEstruturaFuncionalidade);
            }
        }

        return json_encode($output);
    }

}

?>